Three dimensional (3D) computer graphics have also become a key technology for communicating ideas, data, and trends in most areas of commerce, science, and education. The objects in a 3-D computer generated image are typically described by data models. These models store descriptions of “primitives” (usually mathematically described polygons and polyhedra) that define the shape of the object, the object attributes, and the connectivity and positioning data describing how the objects fit together.
Many applications require models that enable the generation of smooth surfaces and smooth curves. To realistically generate a real-world image, the surfaces of objects, both the curved and flat surfaces, in the image need to be realistically modeled. The most common representations for 3D surfaces are “polygon meshes.” A polygon mesh is a set of connected, polygonally bounded, planar surfaces. Open boxes, cabinets, and building exteriors can be easily and naturally represented by polygon meshes. Polygon meshes, however, are less easily used to represent objects with curved surfaces.
With a curved surface, a polygon mesh provides a modeled approximation of the true contour of the surface. Although the representation is only approximate, the “errors” of the approximation can be made arbitrarily small by using more and more polygons to create an increasingly accurate piece wise linear approximation. Generally, increasing the number of polygons in a given curved surface representation leads to a less “blocky,” or geometrically aliased, representation of the real surface.
Computer graphics engineers rely upon a technique known as surface subdivision to provide a method of increasing the number of polygons comprising a polygon mesh. The use of subdivision surfaces however causes a number of problems. Subdividing a polygon mesh representation of an object causes an exponential increase in the number of polygons within the representation. This correspondingly causes a proportional increase in the resource requirements and performance demands placed upon the graphics computer system.
There are several published prior art methods for tessellating subdivision surfaces. Such methods include:
“Recursively generated B-spline surfaces on arbitrary topological surfaces” by E. Catmull and J. Clark (Computer-Aided Design, 10(6) pp. 350-355, November 1978);
“Exact Evaluation of Catmull-Clark Subdivision Surfaces at Arbitrary Parameter Values” by Jos Stam (Computer Graphics, 32 pp. 395-404, July 1998);
“Rapid Evaluation of Catmull-Clark Subdivision Surfaces” by Jeffery Bolz and Peter Shroder (Web 3D′02, Feb. 24-28, 2002, Tempe, Ariz., USA);
“Subdivision Surfaces in Character Animation”, by Tony DeRose, Michael Kass, Tien Truong (Proceedings of the 25th Annual Conference on Computer Graphics and Interactive Techniques, pp. 85-94, July 1998);
“Efficient, fair interpolation using Catmull-Clark surfaces” by Mark Halstead, Michael Kass, Tony DeRose (Proceedings of the 20th Annual Conference on Computer Graphics and Interactive Techniques, pp. 35-44, September 1993);
“A Subdivision Algorithm for Smoothing Down Irregularly Shaped Polyhedrons” by Doo, D. (Proceedings of the International Conference on Interactive Techniques in Computer Aided Design, pp. 157-165, 1978, Bologna, Italy, IEEE Computer Society); and
“Behaviour of Recursive Division Surfaces Near Extraordinary Points” by Doo, D. and Sabin, M. (Computer Aided Design, 10 pp. 356-360, September 1978).
Although the above prior art subdivision algorithms address, to some degree, problems with respect to the resource requirements of subdivision surfaces and problems with respect to the accurate representation of arbitrary topologies, they are each still inefficient in terms of the computational resources required for their execution, in both processor cycles and memory storage space. For example, prior art subdivision algorithms based on Catmull-Clark and Doo-Sabin provided a compact, easy-to-model representation of curved surfaces of arbitrary topology, however, rendering algorithms based on their subdivision rules are very inefficient in terms of memory space and computational time.
Surfaces based on Bezier patches have been widely used by some prior art algorithms due to the fact that Bezier patches are computationally less demanding to render. Bezier surface patches are defined by an array of control points (e.g., typically 4×4) in 3-D space that parametrically define the surface of the patch. Although the array of control points allows individual points on the surface to be computed quickly, objects having complex curves require many separate patches to model correctly, with each of these patches having their respective array of control points. This makes surfaces based on Bezier patches difficult to model with directly, since their representation is very space inefficient and they cannot be used to smoothly render arbitrary topologies.
One prior art scheme for dealing with the above resource requirement and accurate modeling problems involves the adaptation of the subdivision process to more effectively handle problematic areas of a model. This scheme is generally referred to as adaptive tessellation, where certain surfaces having curves and/or complex topology is subdivided to greater degree than the flatter surfaces of the model (e.g., areas which can be accurately represented with fewer numbers of polygons). While certain prior art applications support adaptive tessellation (e.g., PRman® from Pixar Corp.), such applications are not integrated with the graphics industry's major 3-D modeling/animation packages. Additionally, such prior art applications do not support interactive adaptive tessellation, where, for example, a graphics engineer can iteratively process a model to obtain the optimal degree of subdivision.
Another problem with prior art adaptive tessellation applications (e.g., PRman, etc.) is that they generally cannot guarantee “watertight” tessellation. As known by those skilled in the art, a typical prior art adaptive tessellation application can subdivide certain surfaces of a model in such manner as to create small gaps between adjacent polygons. This could have an extremely adverse impact on the quality of the final rendered model. To ensure a watertight tessellation (e.g., no gaps or cracks between the polygons), prior art adaptive tessellation applications must be followed by a time-consuming post-processing step involving the use of a specialized crack-avoidance algorithm. This algorithm is configured to examine an earlier subdivided model for any gaps and “glue” the problematic polygons together if necessary.
Thus, what is required is a solution for efficiently implementing surface subdivision in a polygon mesh. The required solution should be able to accurately subdivide a curved surface having an arbitrary topology using a minimum amount of memory. The required solution should support interactive processing in order to obtain a desired degree of subdivision. What is further required is system for efficiently computing a subdivision surface with respect to computational hardware requirements. The present invention provides a solution for the above requirements.